/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package entidades;

import java.io.Serializable;
import java.util.Calendar;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 *
 * @author Felipe
 */
@Entity
@Table (name = "NOTAS_ENTRADA")
@NamedQueries 
({
    @NamedQuery (name = "buscarPorDestinatarioYReferencia", query = "select n from NotaEntrada n where n.destino.usuario = ?1 and n.referencia like concat ('%', ?2, '%') order by n.fecha"),
    @NamedQuery (name = "buscarPorDestinatario", query = "select n from NotaEntrada n where n.destino.usuario = ?1 order by n.fecha"),
    @NamedQuery (name = "buscarPorOrigen", query = "select n from NotaEntrada n where n.origen.usuario = ?1 order by n.fecha"),
    @NamedQuery (name = "buscarNoLeidos", query = "select n from NotaEntrada n where n.origen.usuario = ?1 and n.leido = false order by n.fecha")
})
public class NotaEntrada implements Serializable
{
    @Id
    @Column (name = "ID_NOTA_ENTRADA")
    @GeneratedValue (strategy = GenerationType.IDENTITY)
    private long id;
    
    @Column (name = "NUMERO_INGRESO")
    private String numeroIngreso;
    
    @Column (name = "FECHA")
    @Temporal (TemporalType.DATE)
    private Calendar fecha;
    
    @Column (name = "CANTIDAD_FOJAS")
    private int cantidadFojas;
    
    @Column (name = "REFERENCIA")
    private String referencia;
    
    @Column (name = "ARCHIVO")
    private String archivo;
    
    @Column (name = "TAM_ARCHIVO")
    private long tamArchivo;
    
    @JoinColumn (name = "ORIGEN")
    @ManyToOne
    private Usuario origen;
    
    @JoinColumn (name = "DESTINO")
    @ManyToOne
    private Usuario destino;
    
    @Column (name = "LEIDO")
    private boolean leido;
    
    public NotaEntrada ()
    {
        
    }

    public long getId()
    {
        return id;
    }

    public void setId(long id)
    {
        this.id = id;
    }

    public String getNumeroIngreso()
    {
        return numeroIngreso;
    }

    public void setNumeroIngreso(String numeroIngreso)
    {
        this.numeroIngreso = numeroIngreso;
    }

    public Calendar getFecha()
    {
        return fecha;
    }

    public void setFecha(Calendar fecha)
    {
        this.fecha = fecha;
    }

    public int getCantidadFojas()
    {
        return cantidadFojas;
    }

    public void setCantidadFojas(int cantidadFojas)
    {
        this.cantidadFojas = cantidadFojas;
    }

    public String getReferencia()
    {
        return referencia;
    }

    public void setReferencia(String referencia)
    {
        this.referencia = referencia;
    }

    public Usuario getOrigen()
    {
        return origen;
    }

    public void setOrigen(Usuario origen)
    {
        this.origen = origen;
    }

    public Usuario getDestino()
    {
        return destino;
    }

    public void setDestino(Usuario destino)
    {
        this.destino = destino;
    }

    public String getArchivo()
    {
        return archivo;
    }

    public void setArchivo(String archivo)
    {
        this.archivo = archivo;
    }

    public long getTamArchivo()
    {
        return tamArchivo;
    }

    public void setTamArchivo(long tamArchivo)
    {
        this.tamArchivo = tamArchivo;
    }

    public boolean isLeido()
    {
        return leido;
    }

    public void setLeido(boolean leido)
    {
        this.leido = leido;
    }
}
